package com.fh.practice.controller;/**
 * 描述:
 * Author:袁亚强
 * Date:2022/1/2413:50
 */

import com.fh.practice.entity.User;
import com.fh.practice.entity.UserVo;
import com.fh.practice.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * created by macro on 2022/1/24,
 */
@RestController
@RequestMapping("user")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("addUser")
    public Map addUser(User user) {
        Map map = new HashMap();
        if (StringUtils.isEmpty(user.getName()) || StringUtils.isEmpty(user.getPassword()) || StringUtils.isEmpty(user.getEmail())) {
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }
        User user1 = userService.queryByName(user.getName());
        if (user1 != null) {
            map.put("code", 100);
            map.put("data", null);
            map.put("msg", "账号已存在");
            return map;
        }

        try {
            map.put("code", 200);
            map.put("data", userService.addUser(user));
            map.put("msg", "新增成功");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("data", e.getMessage());
            map.put("msg", "新增失败");
        }
        return map;
    }

    @RequestMapping("queryByName")
    public Map queryByName(String name) {
        Map map = new HashMap();
        if (StringUtils.isEmpty(name)) {
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }
        User user1 = userService.queryByName(name);
        if (user1 != null) {
            map.put("code", 100);
            map.put("data", null);
            map.put("msg", "账号已存在");
            return map;
        }
        try {
            map.put("code", 200);
            map.put("data", null);
            map.put("msg", "用户不存在");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("data", e.getMessage());
            map.put("msg", "内部错误");
        }
        return map;
    }

    @GetMapping("queryAllArea")
    public Map queryAllArea() {
        Map map = new HashMap();
        try {
            map.put("code", 200);
            map.put("data", userService.queryAllArea());
            map.put("msg", "查询成功");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("data", e.getMessage());
            map.put("msg", "内部错误");
        }
        return map;
    }

    //登录
    @GetMapping("login")
    public Map login(String name, String password) {
        Map map = new HashMap();
        if (StringUtils.isEmpty(name) || StringUtils.isEmpty(password)) {
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }
        try {
            map.put("code", 200);
            map.put("data", userService.login(name, password));
            map.put("msg", "查询成功");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("data", e.getMessage());
            map.put("msg", "内部错误");
        }
        return map;
    }


    //改密码时判断密码输入是否与原来一致   //1是 对   2是不对
    @PostMapping("queryPasswordById")
    public Map queryPasswordById(User user){
        Map map = new HashMap();
        if (StringUtils.isEmpty(user.getName())){
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }else if(StringUtils.isEmpty(user.getPassword())){
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }else if(user.getId()==null){
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }
        try {
            map.put("code", 200);
            map.put("data", userService.queryPasswordById(user));
            map.put("msg", "查询成功");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("data", e.getMessage());
            map.put("msg", "内部错误");
        }
        return map;
    }
    //修改密码
    @PostMapping("updatePassword")
    public Map updatePassword(User user){
        Map map = new HashMap();
        if (StringUtils.isEmpty(user.getName())){
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }else if(StringUtils.isEmpty(user.getPassword())){
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }else if(user.getId()==null){
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }
        try {
            userService.updatePassword(user);
            map.put("code", 200);
            map.put("data", "");
            map.put("msg", "修改成功");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("data", e.getMessage());
            map.put("msg", "内部错误");
        }
        return map;
    }


    @GetMapping("queryUserAllData")
    public Map queryUserAllData(UserVo userVo){
        Map map = new HashMap();
        if (userVo.getLimit()==null && userVo.getPage()==null){
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }
        try {
            map.put("code", 200);
            map.put("data",userService.queryUserAllData(userVo));
            map.put("msg", "修改成功");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("data", e.getMessage());
            map.put("msg", "内部错误");
        }
        return map;
    }



    //修改
    @PostMapping("updateUserById")
    public Map updateUserById(User user) {
        Map map = new HashMap();
        if (user.getId() == null) {
            map.put("code", 400);
            map.put("data", null);
            map.put("msg", "缺少参数");
            return map;
        }
        try {
            userService.updateUserById(user);
            map.put("code", 200);
            map.put("data","");
            map.put("msg", "查询成功");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("data", e.getMessage());
            map.put("msg", "内部错误");
        }
        return map;
    }

}
